Saltar al contenido principal

Cálculo y Estadística

Python dispone de una amplia colección de módulos matemáticos dentro de su biblioteca estándar, que permiten realizar cálculos numéricos, operaciones aleatorias y análisis estadístico de forma precisa y eficiente. Estos módulos se utilizan constantemente tanto en programación científica como en aplicaciones de ingeniería, finanzas, educación o análisis de datos.

En este bloque se estudiarán tres de los módulos más relevantes en este ámbito:

  • math: proporciona funciones matemáticas avanzadas, constantes y conversiones.
  • random: permite generar valores aleatorios y realizar simulaciones o selecciones al azar.
  • statistics: ofrece herramientas básicas de análisis estadístico.

Su conocimiento resulta esencial para resolver problemas numéricos en Python de manera eficaz y profesional.


1️⃣ Módulo math​

El módulo math incluye una gran variedad de funciones matemáticas y trigonométricas que complementan las operaciones básicas del lenguaje. Es especialmente útil para trabajar con raíces, potencias, logaritmos, redondeos, ángulos o constantes matemáticas como π (pi) y e.

A diferencia de las operaciones básicas (+, -, *, /, **), el módulo math proporciona mayor precisión, rendimiento optimizado y un conjunto de funciones diseñadas para cálculos científicos.

Antes de utilizarlo, debe importarse con la instrucción:

import math

🟩 Funciones más utilizadas​

FunciónDescripciónEjemplo
sqrt(x)Calcula la raíz cuadrada de x.math.sqrt(16) → 4.0
pow(x, y)Eleva x a la potencia y.math.pow(2, 3) → 8.0
ceil(x)Redondea hacia arriba el valor.math.ceil(3.2) → 4
floor(x)Redondea hacia abajo el valor.math.floor(3.8) → 3
factorial(x)Devuelve el factorial de x.math.factorial(5) → 120
log(x, base)Calcula el logaritmo de x en una base determinada (por defecto, e).math.log(8, 2) → 3.0
sin(x), cos(x), tan(x)Devuelven los valores trigonométricos del ángulo x (en radianes).math.sin(math.pi/2) → 1.0
degrees(x) / radians(x)Convierte entre grados y radianes.math.degrees(math.pi) → 180.0
pi, eConstantes matemáticas.math.pi → 3.14159

🟦 Ejemplos prácticos​

Cálculos geométricos​

Cálculos geométricos con math
import math

radio = 5
area = math.pi * math.pow(radio, 2)
longitud = 2 * math.pi * radio

print(f"Área del círculo: {area:.2f}")
print(f"Longitud de la circunferencia: {longitud:.2f}")
en este ejemplo
  • Este programa calcula el área y la longitud de una circunferencia utilizando la constante pi y la función math.pow() para elevar al cuadrado el radio.
  • El formato {:.2f} muestra el resultado con dos decimales, lo que mejora la presentación en pantalla.

Funciones trigonométricas​

Ejemplo con funciones trigonométricas
import math

angulo_grados = 30
angulo_radianes = math.radians(angulo_grados)

print(f"Seno({angulo_grados}°) = {math.sin(angulo_radianes):.3f}")
print(f"Coseno({angulo_grados}°) = {math.cos(angulo_radianes):.3f}")
en este ejemplo
  • Las funciones trigonométricas del módulo math trabajan en radianes, no en grados.
  • Por eso se convierte el valor de 30° a radianes con math.radians().
  • Esto es fundamental en aplicaciones geométricas o gráficas donde se requieran ángulos precisos.

🟨 Diferencia entre pow() y **​

Aunque Python permite elevar números con el operador **, el uso de math.pow() puede ser preferible en cálculos científicos por su compatibilidad con números de coma flotante.

ExpresiónResultadoComentario
5 ** 225Operador nativo, más rápido en enteros.
math.pow(5, 2)25.0Devuelve siempre un float, más adecuado para cálculos de precisión.
en conclusión...

Usar ** es suficiente para exponentes simples; math.pow() conviene cuando se trabaja con valores decimales o funciones que esperan flotantes.


2️⃣ Módulo random​

El módulo random permite generar valores aleatorios y realizar operaciones basadas en el azar. Es ampliamente utilizado en simulaciones, juegos, pruebas estadísticas y cualquier situación en la que se necesite un comportamiento no determinista.

Internamente, Python utiliza algoritmos pseudoaleatorios: los resultados parecen aleatorios, pero se pueden reproducir si se define una semilla específica mediante random.seed().

Para usarlo, se importa así:

import random

🟩 Funciones más utilizadas​

FunciónDescripciónEjemplo
random()Devuelve un número decimal aleatorio entre 0 y 1.random.random() → 0.7431
randint(a, b)Devuelve un número entero aleatorio entre a y b (ambos incluidos).random.randint(1, 6)
uniform(a, b)Devuelve un número decimal aleatorio entre a y b.random.uniform(5, 10)
choice(seq)Devuelve un elemento aleatorio de una secuencia.random.choice(["rojo","azul","verde"])
shuffle(lista)Reordena aleatoriamente los elementos de una lista.random.shuffle(cartas)
seed(x)Establece una semilla para que los resultados sean reproducibles.random.seed(10)

🟦 Ejemplos prácticos​

Simulación de lanzamiento de dado
import random

dado = random.randint(1, 6)
print(f"Has sacado un {dado}")
en este ejemplo

Cada ejecución del programa genera un valor aleatorio entre 1 y 6, simulando el lanzamiento de un dado.

Ejemplo de selección y mezcla aleatoria
import random

cartas = ["A", "K", "Q", "J", "10", "9"]
random.shuffle(cartas)
print("Cartas barajadas:", cartas)
print("Carta extraída:", random.choice(cartas))
en este ejemplo

La función shuffle() mezcla aleatoriamente los elementos de una lista, mientras que choice() selecciona uno al azar. Esta combinación es común en juegos o procesos de selección aleatoria.

🟨 Concepto de semilla​

Los valores generados por random pueden repetirse de forma controlada si se utiliza una semilla. Esto es útil cuando se necesita reproducir exactamente los mismos resultados en pruebas o simulaciones.

Reproducibilidad con seed()
import random

random.seed(42)
print(random.random())
print(random.randint(1, 10))
en este ejemplo
  • La llamada a seed(42) inicializa el generador aleatorio con un valor fijo.
  • Cada vez que se ejecute el programa con la misma semilla, se obtendrán los mismos resultados.

3️⃣ Módulo statistics​

El módulo statistics proporciona herramientas básicas para realizar análisis estadísticos descriptivos sobre colecciones de datos numéricos. Incluye funciones para calcular medias, medianas, modas, varianzas y desviaciones estándar. Aunque no reemplaza a librerías más completas como NumPy o pandas, resulta suficiente para tareas educativas o análisis sencillos.

Para usarlo se importa con:

import statistics

🟩 Funciones más utilizadas​

FunciónDescripciónEjemplo
mean(datos)Calcula la media aritmética.statistics.mean([1, 2, 3]) → 2
median(datos)Calcula la mediana.statistics.median([1, 3, 3, 6, 7]) → 3
mode(datos)Devuelve la moda.statistics.mode([2, 2, 3, 3, 3, 4]) → 3
stdev(datos)Calcula la desviación estándar.statistics.stdev([1, 2, 3, 4, 5]) → 1.58
variance(datos)Calcula la varianza.statistics.variance([1, 2, 3, 4, 5]) → 2.5

🟦 Ejemplos prácticos​

Estadísticas básicas​

Análisis estadístico de calificaciones
import statistics

notas = [7, 8.5, 6, 9, 7.5, 8]

print("Media:", statistics.mean(notas))
print("Mediana:", statistics.median(notas))
print("Moda:", statistics.mode(notas))
print("Desviación estándar:", round(statistics.stdev(notas), 2))
en este ejemplo
  • El módulo statistics permite calcular las medidas más comunes de tendencia central y dispersión con gran sencillez.
  • El redondeo con round() mejora la presentación de los resultados numéricos.

Análisis aplicado​

Análisis de temperaturas diarias
import statistics

temperaturas = [22, 21, 23, 22, 24, 20, 22]

media = statistics.mean(temperaturas)
desviacion = statistics.stdev(temperaturas)

print(f"Temperatura media: {media:.1f}°C")
print(f"Variabilidad: {desviacion:.2f}°C")
en este ejemplo

Este ejemplo aplica el módulo statistics a un conjunto de datos reales, mostrando cómo obtener la media y la variabilidad de una serie de temperaturas diarias.

🟨 Comparación con librerías externas​

El módulo statistics está orientado a análisis simples sobre listas pequeñas o medianas. En cambio, librerías externas como NumPy o pandas están diseñadas para manejar grandes volúmenes de datos y ofrecen operaciones vectorizadas mucho más eficientes.

CaracterísticastatisticsNumPy
Incluido en la biblioteca estándar✅❌ (requiere instalación)
Velocidad con grandes volúmenesMediaMuy alta
Complejidad de usoBajaMedia
Tipo de datosListas y secuenciasArrays multidimensionales
Uso típicoEducación y análisis básicoCiencia de datos, IA, simulaciones

📊 Tabla resumen​

MóduloPropósito principalEjemplo representativo
mathOperaciones matemáticas, trigonometría y constantes.math.sqrt(25)
randomGeneración de valores aleatorios y simulaciones.random.randint(1, 6)
statisticsCálculos estadísticos básicos sobre datos numéricos.statistics.mean(datos)

Estos tres módulos constituyen la base de las operaciones numéricas y estadísticas en Python. Su comprensión es esencial para abordar tareas de cálculo, análisis de datos y simulación, tanto en contextos académicos como en el desarrollo de software técnico o científico.